package com.dyrj.ysk.controller;

import com.dcfs.esb.ftp.client.https.FtpGet;
import com.dcfs.esb.ftp.server.msg.FileMsgBean;
import com.dyrj.ysk.exception.BizException;
import com.pabank.sdk.PABankSDK;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 下载文件控制器
 * @author 吴侠志  2019/12/19
 * @version 1.0
 */
@Slf4j
@Controller
@RequestMapping("/ysksdk")
public class DownloadFileController {
    /**
     * 下载文件
     * @param request
     * @param response
     * @throws IOException
     * @throws BizException
     */
    @RequestMapping(value = "/downloadFile",method = RequestMethod.GET)
    @ResponseBody
    public void downloadFile(HttpServletRequest request, HttpServletResponse response) throws IOException, BizException {
        String remoteFile="/esb/test_file.txt";
        String localFile="D:\\用户\\ex_kjkfzx_wuxz\\Desktop\\test_file2.txt";
        String privateAuth="49852dd1-279c-46f3-9609-6eea90ae2334";
        FtpGet ftpGet = null;
        FileMsgBean bean = null;
        try {
            // 初始化配置
            PABankSDK.init("conf/config.properties");
            // 验证开发者
            PABankSDK.getInstance().approveDev();
            bean = new FileMsgBean();
            /**
             * FtpGet类的构造器使用说明 ;
             * 参数一:remoteFile： 服务器文件名，由文件上传方提供，如"/picp/报价单.txt";
             * 参数二:localFile:下载文件时，需指定一个本机的绝对路径存放下载后的文件（文件名也要指定），如"D:/download.txt";
             * 参数三:scrtFlag ： 是否加密标志，填false ;
             * 参数四:key： 加密密钥，填null ;
             * 参数五:privateAuth： 提取码，由文件上传方提供。每个文件都有对应的提取码，提取码错误将无法下载文件 ;
             * 参数六:bean：消息bean， 用于获取服务器响应的消息.
             * */
            ftpGet = new FtpGet(remoteFile, localFile, false, null, privateAuth, bean);
            //文件上传
            ftpGet.doGetFile();
            response.addHeader("Content-Type", "text/html;charset=utf-8");
            response.getWriter().write("downloadSuccess");
        } catch (Exception e) {
            // 捕获到异常后，可以从FileMsgBean类获取异常信息
            System.out.println(bean.getFileRetMsg());
            e.printStackTrace();
            response.addHeader("Content-Type", "text/html;charset=utf-8");
            response.getWriter().write("downloadFail");
        } finally {
            if (null != ftpGet) {
                ftpGet.close(true);
            }
        }

    }

}
